package main

import "fmt"

func twoSum(nums []int, target int) []int {
	pointOne := 0
	pointTwo := len(nums)
	// 当第一个指针比第二指针小的化，需要判断
	for pointOne < pointTwo {
		// 根据不同的条件来移动指针
		if nums[pointOne]+nums[pointTwo] == target {
			return []int{nums[pointOne], nums[pointTwo]}
		}
		if nums[pointOne]+nums[pointTwo] < target {
			pointOne++
		} else {
			pointTwo++
		}
	}
	return []int(nil)
}

//剑指 Offer 57 - II. 和为s的连续正数序列
//输入一个正整数 target ，输出所有和为 target 的连续正整数序列（至少含有两个数）。
//序列内的数字由小到大排列，不同序列按照首个数字从小到大排列
func findContinuousSequence(target int) (ans [][]int) {
	var res []int
	for i := 1; i <= (target-1)/2; i++ { //向下取整的一半 5-1/2 =2 6-1/2=2;
		sum := i
		res = []int{i}
		for j := i + 1; j < target; j++ {
			sum += j
			res=append(res, j)
			if sum == target {
				ans = append(ans, res)
			}
			if sum > target {
				break
			}
		}
	}
	return
}
func main() {
	target := 9
	fmt.Println(findContinuousSequence(target))

}

//思路
// 双指针法，根据指针的节点所在的节点的和，
// 判断，两个指针的移动。最终找到符合条件的值。
